//
//  main.m
//  OC03_NSStringAndNSValue
//
//  Created by Hanlingyu on 16/7/6.
//  Copyright © 2016年 ltq. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    
    // 1. 查看头文件或者API, 他们的初始化/构造器, 基本都是放在一起
    // 2. 当我们拿到一个新的类, 你需要查看这个类的初始化或者构造器
    
    
#if 0
    /** 初始化(init) */
    
    NSString *string = [[NSString alloc] init];
    
    /** 便利构造器(string) */
    NSString *str = [NSString string];
    
    /** 获取字符串长度(length) */
    NSUInteger length = string.length; // 无符号长整型
    
    /** 获取字符串中字符(character) */
    //char character = [string characterAtIndex:2];
    
    /** 字符串是否相等(equal) */
    [str isEqualToString:string];
    
    
    /** 获取子串(sub) */
//    [str substringFromIndex:2];
//    [str substringToIndex:3];
//    NSRange range = {1, 3};
//    [str substringWithRange:range];
    
    /** 拼接字符串(append) */
    [str stringByAppendingFormat:@"adsfdsfads%@", string];
    [str stringByAppendingString:@"fadsadf"];
    
    // /users/local/bin/
    NSString *pathString = @"/users/local/bin";
    // 如果字符串方法带有返回值, 操作的不是原字符串, 而是生成新的字符串
    pathString = [pathString stringByAppendingPathComponent:@"name.plist"];// 拼接路径, 方法会自动在前面添加'/'
    NSLog(@"%@", pathString);
    
    /** 替换字符串(replace) */
    
    
    
    /** 字符串对象转化为int类型(int) */
    int number = [pathString intValue];
    NSLog(@"%d", number);
    [pathString doubleValue];
    [pathString floatValue];
    [pathString boolValue];
    
    
    /** 字符串对象转化为其他数据类型, 例如double, float, BOOL等. */
    
    
    /** 字符串全部大写(uppercase) */
    NSLog(@"%@", [pathString uppercaseString]);
    
    
    
    
    /** 字符串全部小写(lowercase) */
    
    NSLog(@"%@", [pathString lowercaseString]);
    
    /** 字符串首字母大写(capitalized) */
    
    
    
    
    /** 是否以指定字符串为前缀(prefix) */
    
    
    
    
    /** 是否以指定字符串为后缀(suffix) */
    
    
    
    /** 练习: http://www.lanou3g.com/icon.png 判断上述字符串中是否以“png”结尾，如果是就替换成“jpg”，如果不是，就拼接”.jpg”。*/
#endif
    
    
#pragma mark - 可变字符串NSMutableString
    
    int age = 10;
    // number类型初始化
    NSNumber *ageNumber = [[NSNumber alloc] initWithInt:age];
    // number类型构造器方法
    NSNumber *ageNumber1 = [NSNumber numberWithInt:age];
    // numbe类型字面量@"" @()
    NSNumber *ageNumber2 = @(age);
    
    // 1.330184198501184115 处理字符串, 取出他的出生年月, 并计算出年龄(不用具体)
    // 输出格式 1985年01月18日 年龄:31岁
    
    
    NSString *string = @"330184198501184115";
    // 年月日的范围
    NSRange yearRange = {6, 4};
    NSRange mouthRange = {10, 2};
    NSRange dayRange = {12, 2};
    // 取出年月日的字符串
    NSString *yearStr = [string substringWithRange:yearRange];
    NSString *mouthStr = [string substringWithRange:mouthRange];
    NSString *dayStr = [string substringWithRange:dayRange];
    // 计算年龄
    NSInteger theAge = 2016 - yearStr.integerValue;
    // 总结出输出的字符串格式
    NSString *outPutStr = [NSString stringWithFormat:@"%@年%@月%@日, 年龄: %ld", yearStr, mouthStr, dayStr, theAge];
    NSLog(@"%@", outPutStr);


    
    
    return 0;
}
